note
	description: "Objects that ..."
	author: ""
	date: "$Date$"
	revision: "$Revision$"

class
	MC72


create
	crear_mc

feature

	crear_mc
		-- Constructor de la clase MC72
		do
			misil:=void
		end

feature

	preparar_misil
		-- Si hay misiles disponibles, crea un misil. Sino, la operacion falla.

		require
			getHayMisiles=true

		local
			bandera : INTEGER

		do
			bandera:=0
			setup_misil
			print ("Se creo el misil %N")
			bandera:=1
			cargar_misil
			print("Se ha cargado el misil %N")
			bandera:=2
			preparado:=true
			rescue
				if(bandera=0)
					then
						print ("Error... No hay misiles. %N")
				else
				if(bandera=1)
					then
						print("Intentando preparar el misil nuevamente.. %N")
					 	retry
					end
				end
		end


	 apuntar_misil (ciudad : STRING)
		-- Fija el blanco en el misil.
		require
			getCreoMisil=true
		do
			misil.fijar_blanco (ciudad)
			apuntado:=true
		ensure
			misil.getobjetivo=ciudad
		end



	lanzar_misil
		-- Le ordena al misil que despegue.
		require
			getApuntoMisil=true
		do
			misil.despegar
			print ("El misil despego %N")
		end

feature

	getMisil:MISIL
		-- Getter del misil
		do
			Result:=misil
		end

	getPreparoMisil:BOOLEAN
		do
			Result:=preparado
		end

	getCreoMisil:BOOLEAN
		do
			Result:=creado
		end

	getCargoMisil:BOOLEAN
		do
			Result:=cargado
		end


	getApuntoMisil:BOOLEAN
		do
			Result:=apuntado
		end

	getHayMisiles:BOOLEAN
		do
			Result:=hay_misiles
		end



feature {NONE}

	misil: MISIL
	creado:BOOLEAN
	preparado:BOOLEAN
	cargado:BOOLEAN
	apuntado:BOOLEAN

	hay_misiles: BOOLEAN
		-- Retorna verdadero si hay misiles en el stock, falso en caso contrario.
		local
			r: RANDOM
			t: DATE_TIME
		do
			create r.make
			create t.make_now
			r.set_seed (t.seconds)
			if ((r.next_random (t.seconds) \\ 2) /= 0) then
				print ("Hay misiles disponibles %N")
				Result := True
			else
				print ("No hay misiles disponibles %N")
				Result := False
			end
		end

	setup_misil
			-- Si hay misiles disponibles crea un misil.
		require
			hay_misiles
		do
			create misil.crear_misil
			creado:=true
		end

	cargar_misil 
			-- Activa el misil.
		require
			getCreoMisil=true
		do
			misil.activar
			cargado:=true
			print ("Se activo el misil %N")
		end


end -- Fin de la clase MC72
